/**
 * 
 */
package edu.acatlan.unam.shared.bdoo;

//Librerías de la clase
import java.io.Serializable;
import java.util.ArrayList;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.NotPersistent;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

/**
 * @author jacobo
 *
 */
@SuppressWarnings("serial")
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class TEsquema implements Serializable, ModeloRelacional {
	//Propiedades de la clase
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long idEsquema;
	@Persistent
	private String nombreBD;
	@Persistent
	private Long idUsuario;
	@NotPersistent
	private ArrayList<TTabla> tablas;
	
	/**
	 * Constructor de la clase
	 */
	public TEsquema() {
		tablas = new ArrayList<TTabla>();
	}
	
	/**
	 * @param nombreBD es el nombre de la base de datos
	 * @param idUsuario es el identificador del usuario de la aplicación
	 */
	public TEsquema(String nombreBD, Long idUsuario) {
		this.nombreBD = nombreBD;
		this.idUsuario = idUsuario;
	}

	/**
	 * @return the idEsquema
	 */
	public Long getIdEsquema() {
		return idEsquema;
	}

	/**
	 * @param idEsquema the idEsquema to set
	 */
	public void setIdEsquema(Long idEsquema) {
		this.idEsquema = idEsquema;
	}

	/**
	 * @return the nombreBD
	 */
	public String getNombreBD() {
		return nombreBD;
	}

	/**
	 * @param nombreBD the nombreBD to set
	 */
	public void setNombreBD(String nombreBD) {
		this.nombreBD = nombreBD;
	}

	/**
	 * @return the idUsuario
	 */
	public Long getIdUsuario() {
		return idUsuario;
	}

	/**
	 * @param idUsuario the idUsuario to set
	 */
	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}

	/* (non-Javadoc)
	 * @see edu.acatlan.unam.shared.bdoo.ModeloRelacional#getCadenaDLL()
	 */
	public String getCadenaDLL() {
		String c = "CREATE SCHEMA IF NOT EXISTS `" + nombreBD +
				"` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ; USE `" + nombreBD + "`;<br/><br/>";
		
		for(TTabla t : tablas)
			c += "CREATE  TABLE IF NOT EXISTS '" + nombreBD + "'." + t.getCadenaDLL() + "<br/>";
		
		return c;
	}

	/**
	 * @return las tablas del esquema
	 */
	public ArrayList<TTabla> getTablas() {
		return tablas;
	}
	
	/**
	 * @param t es un arreglo de tablas
	 */
	public void setTablas(ArrayList<TTabla> t) {
		tablas = t;
	}
}
